package com.contain.demo1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Test {

	public static void main(String[] args) {
		// 你可以使用Arrays.asList()的输出作为一个List，但是其底层仍然是数组，因此不能改变其大小
		List<Integer> c = Arrays.asList(1, 2, 3, 4, 5);
		// 运行时会报错
		c.add(6);

		List<Snow> s1 = Arrays.asList(new Crusty(), new Slush(), new Powder());
		// 因为只有Powder类型，所有只会创建List<Powder>
		// List<Snow> s2 = Arrays.asList(new Light(), new Heavy());
		List<Snow> s2 = Arrays.asList(new Crusty(), new Heavy());

		List<Snow> s3 = new ArrayList<Snow>();
		// 没问题，因为已经从第一个参数知道了目标类型
		Collections.addAll(s3, new Light(), new Heavy());

		// 显示类型参数说明：可以在Arrays.asList()中间插入一条线索，以告诉编译器对于Arrays.asList()产生的List类型，实际的目标类型应该是什么
		List<Snow> s4 = Arrays.<Snow> asList(new Light(), new Heavy());
	}

}
